Amazon RDS for PostgreSQL で作成時に指定できるバージョンを調べてみた
こんにちは!DA(データアナリティクス)事業本部 サービスソリューション部の大高です。
最近、Amazon RDS for PostgreSQLで作成時に指定できるバージョンが一部廃止されていることを教えてもらいました。 一方で「実際にインスタンス作成時に利用できるバージョンはどうやって確認したらよいのか?」が気になったので調べてみました。
前提
このエントリではAWS CLIを利用しますが、わたしは以下のとおりバージョン2.4.23
のAWS CLIを利用しています。
% aws --version aws-cli/2.4.23 Python/3.8.8 Darwin/20.6.0 exe/x86_64 prompt/off
rds describe-db-engine-versions コマンド
AWS CLIにはrds describe-db-engine-versions
というコマンドがあります。
このコマンドでインスタンス作成時に指定できるバージョンが分かるようなので少し試してみました。
DBインスタンスのデフォルトバージョン
まずは、デフォルトのバージョン表示についてです。
以下の公式ドキュメントに記載されているように、rds describe-db-engine-versions
コマンドに--default-only
オプションを指定して実行すると、DBインスタンス作成時のデフォルトバージョンが確認できます。
% aws rds describe-db-engine-versions --default-only --engine postgres
実際に実行すると以下のようになりました。
% aws rds describe-db-engine-versions --default-only --engine postgres { "DBEngineVersions": [ { "Engine": "postgres", "EngineVersion": "13.4", "DBParameterGroupFamily": "postgres13", "DBEngineDescription": "PostgreSQL", "DBEngineVersionDescription": "PostgreSQL 13.4-R1", "ValidUpgradeTarget": [ { "Engine": "postgres", "EngineVersion": "13.5", "Description": "PostgreSQL 13.5-R1", "AutoUpgrade": false, "IsMajorVersionUpgrade": false }, { "Engine": "postgres", "EngineVersion": "14.1", "Description": "PostgreSQL 14.1-R1", "AutoUpgrade": false, "IsMajorVersionUpgrade": true } ], "ExportableLogTypes": [ "postgresql", "upgrade" ], "SupportsLogExportsToCloudwatchLogs": true, "SupportsReadReplica": true, "SupportedFeatureNames": [ "Lambda", "s3Export", "s3Import" ], "Status": "available", "SupportsParallelQuery": false, "SupportsGlobalDatabases": false, "MajorEngineVersion": "13", "SupportsBabelfish": false } ] }
DBEngineVersionDescription
とEngineVersion
あたりにバージョン情報が、Status
に利用可否が表示されているのが分かりますね。
2022/03/07現在だと13.4
がデフォルトバージョンになるようです。
利用できるバージョンを一覧で表示したい
今度は、これをベースに一覧表示してみたいと思います。
一覧表示をする場合には--query
オプションと、--output table
オプションを利用すると良さそうなので、以下のエントリを参考にさせていただきつつ、試してみました。
--query
オプションには、先程確認した際に利用できそうだったDBEngineVersionDescription
、EngineVersion
、Status
を含めてみます。また、--output table
と指定することで表形式で出力できます。
実際に試したコマンドは以下のようになります。
% aws rds describe-db-engine-versions \ --engine postgres \ --query 'DBEngineVersions[].[DBEngineVersionDescription,EngineVersion,Status]' \ --output table ------------------------------------------------- | DescribeDBEngineVersions | +-----------------------+---------+-------------+ | PostgreSQL 9.6.9-R1 | 9.6.9 | available | | PostgreSQL 9.6.11-R1 | 9.6.11 | available | | PostgreSQL 9.6.15-R1 | 9.6.15 | available | | PostgreSQL 9.6.22-R1 | 9.6.22 | available | | PostgreSQL 9.6.23-R1 | 9.6.23 | available | | PostgreSQL 9.6.24-R1 | 9.6.24 | available | | PostgreSQL 10.17-R1 | 10.17 | available | | PostgreSQL 10.18-R1 | 10.18 | available | | PostgreSQL 10.19-R1 | 10.19 | available | | PostgreSQL 11.1-R1 | 11.1 | available | | PostgreSQL 11.4-R1 | 11.4 | available | | PostgreSQL 11.5-R1 | 11.5 | available | | PostgreSQL 11.6-R1 | 11.6 | available | | PostgreSQL 11.8-R1 | 11.8 | available | | PostgreSQL 11.10-R1 | 11.10 | available | | PostgreSQL 11.12-R1 | 11.12 | available | | PostgreSQL 11.13-R1 | 11.13 | available | | PostgreSQL 11.14-R1 | 11.14 | available | | PostgreSQL 12.6-R1 | 12.6 | available | | PostgreSQL 12.7-R1 | 12.7 | available | | PostgreSQL 12.8-R1 | 12.8 | available | | PostgreSQL 12.9-R1 | 12.9 | available | | PostgreSQL 13.3-R1 | 13.3 | available | | PostgreSQL 13.4-R1 | 13.4 | available | | PostgreSQL 13.5-R1 | 13.5 | available | | PostgreSQL 14.1-R1 | 14.1 | available | +-----------------------+---------+-------------+
ここで表示されたバージョンが、2022/03/07現在で利用できるバージョンということが分かりました。
利用できなくなったバージョンも含めて表示したい
最後に、利用できなくなったバージョンも含めて表示してみます。
標準だと利用できるバージョンしか表示されないので、--include-all
オプションを追加して利用できなくなったバージョンも表示させます。
% aws rds describe-db-engine-versions \ --engine postgres \ --include-all \ --query 'DBEngineVersions[].[DBEngineVersionDescription,EngineVersion,Status]' \ --output table -------------------------------------------------- | DescribeDBEngineVersions | +-----------------------+---------+--------------+ | PostgreSQL 9.3.1-R1 | 9.3.1 | deprecated | | PostgreSQL 9.3.2-R1 | 9.3.2 | deprecated | | PostgreSQL 9.3.3-R1 | 9.3.3 | deprecated | | PostgreSQL 9.3.5-R1 | 9.3.5 | deprecated | | PostgreSQL 9.3.6-R1 | 9.3.6 | deprecated | | PostgreSQL 9.3.9-R1 | 9.3.9 | deprecated | | PostgreSQL 9.3.10-R1 | 9.3.10 | deprecated | | PostgreSQL 9.3.12-R1 | 9.3.12 | deprecated | | PostgreSQL 9.3.14-R1 | 9.3.14 | deprecated | | PostgreSQL 9.3.16-R1 | 9.3.16 | deprecated | | PostgreSQL 9.3.17-R1 | 9.3.17 | deprecated | | PostgreSQL 9.3.19-R1 | 9.3.19 | deprecated | | PostgreSQL 9.3.20-R1 | 9.3.20 | deprecated | | PostgreSQL 9.3.22-R1 | 9.3.22 | deprecated | | PostgreSQL 9.3.23-R1 | 9.3.23 | deprecated | | PostgreSQL 9.3.24-R1 | 9.3.24 | deprecated | | PostgreSQL 9.3.25-R1 | 9.3.25 | deprecated | | PostgreSQL 9.4.1-R1 | 9.4.1 | deprecated | | PostgreSQL 9.4.4-R1 | 9.4.4 | deprecated | | PostgreSQL 9.4.5-R1 | 9.4.5 | deprecated | | PostgreSQL 9.4.7-R1 | 9.4.7 | deprecated | | PostgreSQL 9.4.9-R1 | 9.4.9 | deprecated | | PostgreSQL 9.4.11-R1 | 9.4.11 | deprecated | | PostgreSQL 9.4.12-R1 | 9.4.12 | deprecated | | PostgreSQL 9.4.14-R1 | 9.4.14 | deprecated | | PostgreSQL 9.4.15-R1 | 9.4.15 | deprecated | | PostgreSQL 9.4.17-R1 | 9.4.17 | deprecated | | PostgreSQL 9.4.18-R1 | 9.4.18 | deprecated | | PostgreSQL 9.4.19-R1 | 9.4.19 | deprecated | | PostgreSQL 9.4.20-R1 | 9.4.20 | deprecated | | PostgreSQL 9.4.21-R1 | 9.4.21 | deprecated | | PostgreSQL 9.4.23-R1 | 9.4.23 | deprecated | | PostgreSQL 9.4.24-R1 | 9.4.24 | deprecated | | PostgreSQL 9.4.25-R1 | 9.4.25 | deprecated | | PostgreSQL 9.4.26-R1 | 9.4.26 | deprecated | | PostgreSQL 9.5.2-R1 | 9.5.2 | deprecated | | PostgreSQL 9.5.4-R1 | 9.5.4 | deprecated | | PostgreSQL 9.5.6-R1 | 9.5.6 | deprecated | | PostgreSQL 9.5.7-R1 | 9.5.7 | deprecated | | PostgreSQL 9.5.9-R1 | 9.5.9 | deprecated | | PostgreSQL 9.5.10-R1 | 9.5.10 | deprecated | | PostgreSQL 9.5.12-R1 | 9.5.12 | deprecated | | PostgreSQL 9.5.13-R1 | 9.5.13 | deprecated | | PostgreSQL 9.5.14-R1 | 9.5.14 | deprecated | | PostgreSQL 9.5.15-R1 | 9.5.15 | deprecated | | PostgreSQL 9.5.16-R1 | 9.5.16 | deprecated | | PostgreSQL 9.5.18-R1 | 9.5.18 | deprecated | | PostgreSQL 9.5.19-R1 | 9.5.19 | deprecated | | PostgreSQL 9.5.20-R1 | 9.5.20 | deprecated | | PostgreSQL 9.5.21-R1 | 9.5.21 | deprecated | | PostgreSQL 9.5.22-R1 | 9.5.22 | deprecated | | PostgreSQL 9.5.23-R1 | 9.5.23 | deprecated | | PostgreSQL 9.5.24-R1 | 9.5.24 | deprecated | | PostgreSQL 9.5.25-R1 | 9.5.25 | deprecated | | PostgreSQL 9.6.1-R1 | 9.6.1 | deprecated | | PostgreSQL 9.6.2-R1 | 9.6.2 | deprecated | | PostgreSQL 9.6.3-R1 | 9.6.3 | deprecated | | PostgreSQL 9.6.5-R1 | 9.6.5 | deprecated | | PostgreSQL 9.6.6-R1 | 9.6.6 | deprecated | | PostgreSQL 9.6.8-R1 | 9.6.8 | deprecated | | PostgreSQL 9.6.9-R1 | 9.6.9 | available | | PostgreSQL 9.6.10-R1 | 9.6.10 | deprecated | | PostgreSQL 9.6.11-R1 | 9.6.11 | available | | PostgreSQL 9.6.12-R1 | 9.6.12 | deprecated | | PostgreSQL 9.6.14-R1 | 9.6.14 | deprecated | | PostgreSQL 9.6.15-R1 | 9.6.15 | available | | PostgreSQL 9.6.16-R1 | 9.6.16 | deprecated | | PostgreSQL 9.6.17-R1 | 9.6.17 | deprecated | | PostgreSQL 9.6.18-R1 | 9.6.18 | deprecated | | PostgreSQL 9.6.19-R1 | 9.6.19 | deprecated | | PostgreSQL 9.6.20-R1 | 9.6.20 | deprecated | | PostgreSQL 9.6.21-R1 | 9.6.21 | deprecated | | PostgreSQL 9.6.22-R1 | 9.6.22 | available | | PostgreSQL 9.6.23-R1 | 9.6.23 | available | | PostgreSQL 9.6.24-R1 | 9.6.24 | available | | PostgreSQL 10.1-R1 | 10.1 | deprecated | | PostgreSQL 10.3-R1 | 10.3 | deprecated | | PostgreSQL 10.4-R1 | 10.4 | deprecated | | PostgreSQL 10.5-R1 | 10.5 | deprecated | | PostgreSQL 10.6-R1 | 10.6 | deprecated | | PostgreSQL 10.7-R1 | 10.7 | deprecated | | PostgreSQL 10.9-R1 | 10.9 | deprecated | | PostgreSQL 10.10-R1 | 10.10 | deprecated | | PostgreSQL 10.11-R1 | 10.11 | deprecated | | PostgreSQL 10.12-R1 | 10.12 | deprecated | | PostgreSQL 10.13-R1 | 10.13 | deprecated | | PostgreSQL 10.14-R1 | 10.14 | deprecated | | PostgreSQL 10.15-R1 | 10.15 | deprecated | | PostgreSQL 10.16-R1 | 10.16 | deprecated | | PostgreSQL 10.17-R1 | 10.17 | available | | PostgreSQL 10.18-R1 | 10.18 | available | | PostgreSQL 10.19-R1 | 10.19 | available | | PostgreSQL 11.1-R1 | 11.1 | available | | PostgreSQL 11.2-R1 | 11.2 | deprecated | | PostgreSQL 11.4-R1 | 11.4 | available | | PostgreSQL 11.5-R1 | 11.5 | available | | PostgreSQL 11.6-R1 | 11.6 | available | | PostgreSQL 11.7-R1 | 11.7 | deprecated | | PostgreSQL 11.8-R1 | 11.8 | available | | PostgreSQL 11.9-R1 | 11.9 | deprecated | | PostgreSQL 11.10-R1 | 11.10 | available | | PostgreSQL 11.11-R1 | 11.11 | deprecated | | PostgreSQL 11.12-R1 | 11.12 | available | | PostgreSQL 11.13-R1 | 11.13 | available | | PostgreSQL 11.14-R1 | 11.14 | available | | PostgreSQL 12.2-R1 | 12.2 | deprecated | | PostgreSQL 12.3-R1 | 12.3 | deprecated | | PostgreSQL 12.4-R1 | 12.4 | deprecated | | PostgreSQL 12.5-R1 | 12.5 | deprecated | | PostgreSQL 12.6-R1 | 12.6 | available | | PostgreSQL 12.7-R1 | 12.7 | available | | PostgreSQL 12.8-R1 | 12.8 | available | | PostgreSQL 12.9-R1 | 12.9 | available | | PostgreSQL 13.1-R1 | 13.1 | deprecated | | PostgreSQL 13.2-R1 | 13.2 | deprecated | | PostgreSQL 13.3-R1 | 13.3 | available | | PostgreSQL 13.4-R1 | 13.4 | available | | PostgreSQL 13.5-R1 | 13.5 | available | | PostgreSQL 14.1-R1 | 14.1 | available | +-----------------------+---------+--------------+
すべて表示されました。Status
がdeprecated
のレコードが廃止されたバージョンです。
なお、9.3
は2013年のリリースなので、Amazon RDS for PostgreSQLの歴史を感じますね。
DBインスタンスのデフォルトバージョンだけを表示したい
ここまでをふまえると、単純にDBインスタンスのデフォルトバージョンだけを表示したい場合は以下のコマンドで表示できますね。
% aws rds describe-db-engine-versions \ --engine postgres \ --default-only \ --query 'DBEngineVersions[].[EngineVersion]' \ --output text 13.4
まとめ
以上、Amazon RDS for PostgreSQL で作成時に指定できるバージョンを調べてみました。
個人的にはAWS CLIはjq
コマンドを組み合わせて使うことが多いのですが、今回--query
と--output
オプションを初めて使ってみて面白かったです。
どなたかのお役に立てば幸いです。それでは!